<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>

    function Person(name) {
        this.name = name
    }
    var p2 = new Person('king');
    console.log(p2.__proto__) //Person.prototype
    console.log(p2.__proto__.__proto__) //Object.prototype
    console.log(p2.__proto__.__proto__.__proto__) // null
    // console.log(p2.__proto__.__proto__.__proto__.__proto__)//null后面没有了，报错
    // console.log(p2.__proto__.__proto__.__proto__.__proto__.__proto__)//null后面没有了，报错
    console.log(p2.constructor)//Person
    console.log(p2.prototype)//undefined p2是实例，没有prototype属性
    console.log(Person.constructor)//Function 一个空函数
    console.log('?',Person.prototype)//打印出Person.prototype这个对象里所有的方法和属性
    console.log(Person.prototype.constructor)//Person
    console.log(Person.prototype.__proto__)// Object.prototype
    console.log(Person.__proto__) //Function.prototype
    //?（1）Function函数对象中的__proto__指向Function原型对象

    //?（2）Object原型对象中__proto__的值为null
    //? 除Function函数对象和Object原型对象之外，对象中的__proto__指向~~~谁创建了__proto__所属的对象，就指向谁的原型对象
    console.log(Function)
    console.log(Function.prototype)
    console.log(Function.prototype.__proto__)//Object.prototype
    console.log(Function.__proto__)//Function.prototype
    console.log(Object.__proto__)//Function.prototype
    console.log(Object.prototype.__proto__)//null
</script>
</body>
</html>
